맨위로가기

ECC 메모리

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

ECC 메모리는 메모리 오류를 감지하고 수정하기 위해 추가 비트를 사용하는 기술로, 컴퓨터 시스템의 데이터 무결성을 향상시킨다. DRAM의 단일 비트 오류는 우주선에서 발생하는 중성자와 같은 환경적 요인에 의해 발생할 수 있으며, ECC 메모리는 이러한 오류를 방지하기 위해 개발되었다. ECC 메모리는 패리티 비트 또는 오류 정정 코드(ECC)를 사용하여 단일 비트 오류를 수정하고 이중 비트 오류를 감지하며, 서버 및 고가용성 시스템에서 널리 사용된다. ECC 메모리는 데이터 무결성을 보장하지만, 추가적인 하드웨어 비용과 약간의 성능 저하를 야기할 수 있다.

더 읽어볼만한 페이지

  • 장애 허용 컴퓨터 시스템 - 컴퓨터 클러스터
    컴퓨터 클러스터는 여러 대의 상용 컴퓨터를 고속 네트워크로 연결하여 고성능 컴퓨팅 시스템을 구축하는 방식으로, 슈퍼컴퓨터를 포함한 다양한 분야에서 높은 가용성과 확장성을 제공하며, 클러스터 미들웨어를 통해 시스템 관리, 부하 분산, 통신 방식, 데이터 공유 등을 지원하고 노드 장애 관리를 위한 펜싱 기술을 활용한다.
  • 장애 허용 컴퓨터 시스템 - 트랜잭션 처리
    트랜잭션 처리는 데이터베이스 시스템에서 데이터의 일관성과 무결성을 보장하기 위한 기술이며, ACID 속성을 통해 데이터 정확성을 유지하고 롤백, 데드락 처리 등의 기술을 활용한다.
  • 컴퓨터 메모리 - 플래시 메모리
    플래시 메모리는 전기적으로 데이터의 쓰기 및 삭제가 가능한 비휘발성 메모리 기술로, 마스오카 후지오 박사가 발명하여 카메라 플래시와 유사한 소거 방식으로 인해 명명되었으며, NOR형과 NAND형으로 나뉘어 각기 다른 분야에 적용된다.
  • 컴퓨터 메모리 - 메모리 계층 구조
    메모리 계층 구조는 CPU 데이터 접근 속도 향상을 위해 레지스터, 캐시, RAM, 보조 기억 장치 등으로 구성되며, 속도, 용량, 비용이 다른 계층들을 통해 효율적인 메모리 관리를 가능하게 한다.
ECC 메모리

2. 문제 배경

컴퓨터 시스템 내부의 전기적 또는 자기적 간섭은 DRAM(Dynamic Random Access Memory)의 저장된 데이터 비트가 의도치 않게 반대 상태(0이 1로, 또는 1이 0으로)로 바뀌는 오류를 유발할 수 있다. 처음에는 이러한 오류의 주된 원인이 칩 포장재에 포함된 미량의 방사성 불순물에서 방출되는 알파 입자 때문이라고 생각되었다. 그러나 이후 연구를 통해, DRAM 칩에서 발생하는 일회성 소프트 에러의 대부분은 배경 방사선, 특히 우주선에서 비롯된 중성자와 같은 입자가 메모리 셀의 내용을 변경하거나 관련 회로를 방해함으로써 발생한다는 것이 밝혀졌다.[55] 이러한 오류는 고도가 높아질수록 우주선의 영향이 커지기 때문에 더 빈번하게 발생한다.[56][2][30]

이러한 메모리 오류는 감지되거나 수정되지 않으면 데이터 손상을 일으킬 수 있으며, 이는 특히 과학 및 금융 컴퓨팅, 데이터베이스 및 파일 서버와 같이 데이터의 정확성과 신뢰성이 매우 중요한 시스템에서 심각한 문제를 초래할 수 있다. 또한, 메모리 오류는 예기치 않은 시스템 충돌의 주요 원인 중 하나로 꼽히기도 하며, 때로는 보안 취약점으로 이어질 수도 있다.[32] 예를 들어, '8'이라는 숫자를 저장한 메모리 비트 하나가 오류로 바뀌면 사용자도 모르는 사이에 '9'로 데이터가 변경될 수 있다.

최근에는 DRAM의 집적도가 높아지면서 발생하는 로우해머 현상과 같이, 메모리 셀 간의 간섭으로 인해 데이터 오류가 발생하는 새로운 문제도 보고되고 있다.[33][34] 이러한 다양한 원인에 의한 메모리 오류 가능성은 데이터 무결성을 보장하고 시스템 안정성을 높이기 위한 오류 검출 및 정정(ECC) 기술의 필요성을 잘 보여준다. ECC 메모리는 이러한 오류를 감지하고 수정하여 데이터 손상을 방지하고 시스템의 전반적인 신뢰도를 향상시키는 데 중요한 역할을 한다.

2. 1. 우주선과 메모리 오류

DRAM의 단일 비트가 컴퓨터 시스템 내부의 전기적 또는 자기적 간섭으로 인해 의도치 않게 반대 상태로 바뀔 수 있다. 초기에는 이러한 오류의 주된 원인이 칩 포장재에 포함된 오염물질에서 방출되는 알파 입자 때문이라고 여겨졌다. 그러나 연구를 통해 DRAM 칩에서 발생하는 일회성 소프트 에러의 대부분은 주로 2차 우주선에 포함된 중성자에 의한 배경 방사선 때문이라는 사실이 밝혀졌다. 이 중성자는 하나 이상의 메모리 셀 내용을 변경하거나, 셀의 읽기 또는 쓰기 과정에 사용되는 회로를 방해할 수 있다.[55]

이 때문에 메모리 오류 발생률은 고도가 높아질수록 급격히 증가한다. 예를 들어, 해수면과 비교했을 때 중성자 선속(flux)은 고도 1.5km에서 3.5배, 상업용 항공기의 일반적인 순항 고도인 10km~12km에서는 300배 더 높다.[56][2][30] 따라서 항공기나 인공위성처럼 높은 고도에서 작동하는 시스템은 메모리 오류에 대비하기 위한 특별한 신뢰성 대책이 필수적이다.[31]

높은 고도 환경에서의 메모리 오류 발생 사례로 1997년에 발사된 토성 탐사선 카시니-하위헌스를 들 수 있다. 이 탐사선에는 동일한 비행 기록 장치 두 개가 탑재되었으며, 각각 상용 DRAM 칩 배열 형태로 2.5 Gbit의 메모리를 갖추고 있었다. 내장된 오류 검출 및 정정(EDAC) 기능 덕분에, 탐사선은 엔지니어링 원격 측정 데이터를 통해 수정 가능한 단일 비트 오류와 수정 불가능한 이중 비트 오류 수를 지구로 보고했다.

탐사선은 비행 초기 2년 6개월 동안 하루 평균 약 280건의 단일 비트 오류를 보고하며 비교적 일정한 오류율을 나타냈다. 그러나 우주 비행 첫 달인 1997년 11월 6일에는 하루 동안 발생한 오류 수가 평소의 4배 이상으로 급증했다. 이는 인공위성 GOES 9가 탐지한 태양 입자 방출(solar particle event)(태양 플레어)의 영향으로 분석되었다.[57]

한편, 집적 회로 기술의 발달로 DRAM의 집적도가 계속 높아지고 칩 내부 부품이 미세화되는 동시에 작동 전압이 낮아지는 추세가 이어지면서, 상대적으로 낮은 에너지의 입자도 메모리 셀 상태를 변화시킬 수 있게 되어, 방사선에 의한 오류가 더 잦아질 것이라는 우려가 제기되었다.[2][30] 하지만 메모리 셀 크기가 작아지면 충돌 표적 면적도 줄어들고, SOI(Silicon-on-Insulator)와 같은 새로운 공정 기술 도입으로 개별 셀의 민감도가 오히려 낮아질 수 있어, 이러한 우려를 상쇄하거나 추세를 역전시킬 수 있다는 반론도 있다. 최근 연구에 따르면, 실제로 공정 기술 발전에 따라 우주 방사선으로 인한 단일 이벤트 업셋(Single-Event Upset, SEU)은 크게 감소했으며, 과거의 오류율 증가 우려는 현실화되지 않은 것으로 나타났다.

2. 2. DRAM 밀도 증가와 오류 가능성

DRAM의 집적도가 높아지고 을 구성하는 부품이 미세화되는 동시에, 작동 전압도 계속 낮아지는 추세이다. 이로 인해 저에너지 입자가 메모리 셀의 상태를 변화시킬 가능성이 커져, DRAM 칩이 방사선의 영향을 더 자주 받게 될 것이라는 우려가 제기되었다.[2]

하지만 이러한 우려와는 달리, 메모리 셀의 크기가 작아지면 외부 입자가 충돌할 표적 면적도 작아지는 효과가 있다. 또한, SOI(Silicon-On-Insulator)와 같은 새로운 공정 기술의 도입은 개별 메모리 셀의 방사선 민감도를 오히려 낮출 수 있다. 이러한 기술 발전은 DRAM 밀도 증가로 인한 오류율 상승 추세를 상쇄하거나 심지어 감소시킬 수도 있다.

최근의 연구 결과에 따르면, 우주선으로 인해 발생하는 Single-event upset|단일 이벤트 업셋eng(SEU, 일시적인 소프트 에러)은 공정 기술의 발전에 따라 극적으로 감소하는 경향을 보인다. 따라서 DRAM의 고밀도화가 반드시 메모리 셀의 오류율 증가로 이어진다는 과거의 우려는 근거가 부족한 것으로 나타났다.

3. 연구 동향

DRAM의 비트가 컴퓨터 시스템 내부의 전기적 또는 자기적 간섭으로 인해 상태가 바뀌는 현상은 메모리 오류의 주요 원인 중 하나이다. 초기에는 칩 포장재의 오염물질에서 방출되는 알파 입자가 주된 원인으로 여겨졌으나, 연구를 통해 DRAM 칩에서 발생하는 소프트 에러의 대부분은 배경 방사선, 특히 우주선에 포함된 중성자 때문인 것으로 밝혀졌다. 이 중성자는 메모리 셀의 내용을 변경하거나 관련 회로 작동을 방해할 수 있다.[55]

이러한 이유로 메모리 오류율은 고도가 높아질수록 급격히 증가한다. 예를 들어, 해수면과 비교했을 때 중성자속은 고도 1.5km에서 3.5배, 상용 항공기의 순항 고도인 10km~12km에서는 300배 더 강해진다.[56][30] 따라서 높은 고도에서 작동하는 시스템은 신뢰성 확보를 위해 특별한 대책이 필요하다.[31]

실제 우주 환경에서의 메모리 오류 발생 사례로는 1997년에 발사된 토성 탐사선 카시니-하위헌스가 있다. 이 탐사선에는 상용 DRAM 칩으로 구성된 2.5 Gbit 용량의 비행 기록 장치 두 개가 탑재되었으며, 오류 검출 정정(EDAC) 기능이 내장되어 있었다. 탐사선의 원격 측정 데이터에 따르면, 비행 초기 2년 6개월 동안 하루 평균 약 280개의 수정 가능한 단일 비트 오류가 거의 일정한 비율로 발생했다. 하지만 1997년 11월 6일에는 하루 동안 오류 발생 건수가 평소의 4배 이상으로 급증했는데, 이는 인공위성 GOES 9가 탐지한 태양 입자 방출 때문이었다.[57]

DRAM의 집적도가 높아지고 작동 전압이 낮아지면서 방사선에 더 취약해질 것이라는 우려가 있었다. 저에너지 입자도 메모리 셀 상태를 바꿀 수 있게 되기 때문이다.[30] 그러나 메모리 셀 크기가 작아지면 입자가 충돌할 확률도 줄어들고, SOI(Silicon on Insulator) 같은 신기술 도입으로 인해 셀 자체의 민감도는 오히려 낮아질 수 있다는 반론도 있다. 최근 연구에서는 공정 기술 발전에 따라 우주선으로 인한 단일 이벤트 업셋(SEU, 일시적인 소프트 에러) 발생률이 극적으로 감소했음을 보여주기도 한다.

2007년부터 2009년 사이에 발표된 여러 연구 결과는 메모리 오류율이 매우 광범위하게 변동한다는 것을 보여준다. 오류율은 연구에 따라 10-10 에러/비트·시(시간당 기가바이트당 약 1비트 오류)에서 10-17 에러/비트·시(1000년당 기가바이트당 약 1비트 오류)까지 7자릿수 이상의 큰 차이를 보였다.

Google이 자사의 대규모 서버를 대상으로 수행하여 2009년 SIGMETRICS/Performance 컨퍼런스에서 발표한 연구는 실제 환경에서의 오류율이 이전의 소규모 실험실 연구 결과보다 훨씬 높다는 점을 시사했다. 이 연구에서 관찰된 오류율은 메가비트당 10억 시간당 25,000회에서 70,000회 사이(약 2.5 × 10-11 ~ 7.0 × 10-11 에러/비트·시, 시간당 RAM 기가바이트당 약 0.2~0.6 비트 오류에 해당)였다. 또한, 연구 대상 DIMM 메모리 모듈 중 연간 8% 이상이 메모리 오류의 영향을 받는 것으로 나타났다. 이러한 메모리 오류가 시스템에 미치는 영향은 다양하며, 이는 하위 섹션에서 더 자세히 다룬다.

3. 1. 메모리 오류의 영향

ECC가 없는 시스템에서 메모리 오류는 충돌이나 데이터 손상으로 이어질 수 있다. 특히 대규모 생산 현장에서는 메모리 오류가 시스템 충돌의 가장 흔한 하드웨어 원인 중 하나로 꼽힌다. 또한 메모리 오류는 보안 취약점을 유발할 수도 있다.

다만, 메모리 오류가 발생하더라도 관찰 가능한 오작동을 일으키지 않거나, 계산 또는 저장에 사용되지 않는 데이터에 영향을 미치는 경우에는 아무런 결과가 없을 수도 있다. 2010년의 한 시뮬레이션 연구에 따르면, 웹 브라우저의 경우 메모리 오류 중 극히 일부만이 데이터 손상을 일으켰다. 하지만 많은 메모리 오류가 간헐적이고 서로 연관되어 발생하기 때문에, 그 영향은 독립적인 소프트 오류에서 예상되는 것보다 더 클 수 있다.[32]

최근 DRAM의 집적도가 높아지면서 새로운 유형의 문제가 발견되었다. 특정 메모리 행에 반복적으로 매우 빠르게 접근하면, 물리적으로 인접한 다른 메모리 행의 셀에서 전하 누설이 발생하여 데이터가 변경될 수 있다는 것이다. 이 현상을 로 해머(Row Hammer)라고 부르며, 이를 악용하여 시스템 권한 상승을 시도하는 컴퓨터 보안 익스플로잇 공격 기법도 등장했다.[33][34]

단일 비트 오류가 미치는 영향의 예시는 다음과 같다. ASCII 형식으로 숫자를 저장하는 스프레드시트가 있다고 가정해보자. 숫자 "8"(이진수 0011 100'''0''')이 저장된 바이트의 최하위 비트 결함이나 우주선 등의 영향으로 '1'로 변경되면, 이 값은 "9"(이진수 0011 100'''1''')로 바뀌게 된다. 오류 검사 기능이 없는 시스템에서는 이러한 오류가 감지되지 않고 데이터가 조용히 손상될 수 있다. 반면, 패리티 검사 시스템에서는 오류를 감지하고 시스템을 중단시킬 수 있으며, ECC 시스템에서는 자동으로 수정될 수도 있다.

4. 해결책

메모리에서 발생하는 비트 반전 문제를 해결하기 위해 내결함성 프로그래밍, 패리티 RAM, ECC 메모리 등 여러 접근 방식이 개발되었다. 이러한 문제는 주로 추가적인 메모리 비트를 가진 DRAM 모듈과 이 비트들을 활용하는 메모리 컨트롤러를 통해 완화된다. 오류 감지 및 수정을 위해 패리티 검사나 오류 정정 코드(ECC) 등이 사용된다.

4. 1. 오류 정정 코드 (ECC) 메모리

오류 정정 코드(Error Correction Code, ECC)는 감지되지 않은 데이터 손상을 방지하기 위해 사용되며, 특히 과학 및 금융 컴퓨팅 애플리케이션이나 데이터베이스 및 파일 서버와 같이 데이터 손상이 치명적인 결과를 초래할 수 있는 컴퓨터 시스템에서 중요하다. ECC는 또한 다중 사용자 서버 애플리케이션 및 최대 가용성이 요구되는 시스템에서 시스템 충돌 횟수를 줄이는 데 기여한다.

컴퓨터 시스템 내부의 전기적 또는 자기적 간섭은 동적 랜덤 액세스 메모리(DRAM)의 단일 비트가 의도치 않게 반대 상태로 바뀌는 현상을 유발할 수 있다. 초기에는 이러한 현상의 주원인이 칩 포장재의 오염 물질에서 방출되는 알파 입자 때문이라고 여겨졌으나, 연구 결과 DRAM 칩에서 발생하는 일회성 소프트 에러의 대부분은 배경 방사선, 특히 우주선의 2차 입자인 중성자에 의해 발생하는 것으로 밝혀졌다. 이 중성자는 하나 이상의 메모리 셀 내용을 변경하거나, 해당 셀을 읽고 쓰는 회로에 간섭을 일으킬 수 있다. 이러한 오류 발생률은 고도가 높아짐에 따라 급격히 증가하는데, 예를 들어 해수면과 비교했을 때 중성자 플럭스는 고도 1.5km에서 3.5배, 상업용 항공기의 순항 고도인 10km~12km에서는 300배 더 높다.[2] 따라서 고고도에서 작동하는 시스템은 안정성을 확보하기 위한 특별한 대책이 필요하다.

1997년에 발사된 우주선 ''카시니-하위헌스''는 이러한 환경에서의 메모리 오류 발생 사례를 보여준다. 이 우주선에는 각각 2.5 기가비트 용량의 상용 DRAM 칩 어레이로 구성된 두 개의 동일한 비행 기록 장치가 탑재되었으며, 내장된 EDAC 기능을 통해 수정 가능한 단일 비트 오류와 수정 불가능한 이중 비트 오류 수를 보고했다. 비행 첫 2.5년 동안 하루 평균 약 280개의 일정한 단일 비트 오류율을 보였으나, 1997년 11월 6일에는 하루 동안 오류 수가 4배 이상 급증했다. 이는 위성 GOES 9에 의해 감지된 태양 입자 사건 때문으로 추정된다.

DRAM의 집적도가 높아지고 소자 크기가 작아지면서 작동 전압이 계속 낮아짐에 따라, 저에너지 입자만으로도 메모리 셀 상태가 변할 수 있어 방사선에 의한 영향이 더 커질 것이라는 우려가 있었다.[2] 하지만 셀 크기가 작아지면 입자가 충돌할 표적 면적도 줄어들고, SOI와 같은 신기술은 개별 셀의 민감도를 낮출 수 있어 이러한 우려를 상쇄하거나 오히려 오류율을 감소시킬 수도 있다. 최근 연구에 따르면, 공정 기술 발전에 따라 우주 방사선으로 인한 단일 이벤트 장애는 극적으로 감소했으며, 비트 셀 오류율 증가에 대한 이전의 우려는 근거가 부족한 것으로 나타났다.

2007년에서 2009년 사이에 발표된 연구들은 메모리 오류율이 10-10 오류/비트·시(약 1시간당 기가바이트당 1비트 오류)에서 10-17 오류/비트·시(약 1000년당 기가바이트당 1비트 오류)까지 매우 넓은 범위에 걸쳐 있음을 보여주었다. 구글(Google)의 대규모 서버 팜을 대상으로 한 연구(SIGMETRICS/Performance '09 컨퍼런스에서 발표)에서는 실제 관측된 오류율이 이전의 소규모 실험실 연구 결과보다 훨씬 높은 메가비트당 시간당 25,000(2.5 × 10-11 오류/비트·시)에서 70,000(7.0 × 10-11 오류/비트·시, 즉 약 1.8시간당 RAM 기가바이트당 1비트 오류) 사이임을 발견했다. 이 연구에 따르면 연간 DIMM 메모리 모듈의 8% 이상이 오류의 영향을 받았다.

메모리 오류의 결과는 시스템마다 다르다. ECC가 없는 시스템에서는 오류가 발생하면 시스템 충돌이나 데이터 손상으로 이어질 수 있으며, 대규모 생산 환경에서 메모리 오류는 하드웨어로 인한 시스템 충돌의 가장 흔한 원인 중 하나이다. 또한 메모리 오류는 보안 취약점을 유발할 수도 있다. 물론, 오류가 발생한 비트가 계산에 사용되거나 저장된 데이터에 영향을 미치지 않는 경우에는 아무런 문제가 발생하지 않을 수도 있다. 2010년 시뮬레이션 연구에 따르면 웹 브라우저의 경우 메모리 오류 중 작은 부분만이 데이터 손상을 일으켰지만, 많은 메모리 오류가 간헐적이고 서로 연관되어 발생하기 때문에 그 영향은 독립적인 소프트 오류의 경우보다 더 클 수 있다.[3]

일부 테스트에서는 DRAM 메모리 셀의 격리가 완벽하지 않아, 특정 메모리 주소에 반복적으로 접근하면 인접한 메모리 행의 셀에서 전하 누설이 발생하여 데이터가 변경될 수 있음을 발견했다. 이 현상은 로 해머(Row Hammer)로 알려져 있으며, 일부 권한 상승 컴퓨터 보안 익스플로잇에 악용되기도 한다.[4][5]

이러한 비트 오류 문제를 해결하기 위해 내결함성 프로그래밍, 패리티 RAM, 그리고 ECC 메모리와 같은 여러 접근 방식이 개발되었다. ECC 메모리는 추가적인 메모리 비트를 포함하는 DRAM 모듈과 이러한 비트를 활용하는 메모리 컨트롤러를 사용하여 문제를 완화한다. 이 추가 비트는 패리티 정보를 기록하거나 오류 정정 코드(ECC)를 저장하는 데 사용된다.

  • 패리티: 가장 기본적인 오류 감지 방식으로, 데이터 워드 내의 1의 개수가 홀수인지 짝수인지를 나타내는 추가 비트를 사용한다. 이를 통해 단일 비트 오류(정확히는 홀수 개의 비트 오류)를 감지할 수 있지만, 오류를 수정하거나 짝수 개의 비트 오류를 감지하지는 못한다.
  • 오류 정정 코드(ECC): 패리티보다 더 발전된 방식으로, 오류를 감지할 뿐만 아니라 수정까지 가능하다.
  • 해밍 코드: 가장 일반적인 ECC 유형 중 하나로, 단일 오류 정정 및 이중 오류 감지(SECDED, Single-Error Correction and Double-Error Detection) 기능을 제공한다. 즉, 단일 비트 오류를 자동으로 수정하고, (일반적인 구성에서는 추가 패리티 비트와 함께) 이중 비트 오류를 감지하여 시스템에 경고할 수 있다.
  • 칩킬 ECC: 해밍 코드보다 더 강력한 ECC 기술로, 여러 비트 오류를 수정할 수 있으며, 심지어 메모리 칩 하나가 완전히 고장 나는 경우에도 데이터 손실을 방지할 수 있다. 주로 높은 신뢰성이 요구되는 서버나 워크스테이션 환경에서 사용된다.

4. 2. 기타 해결책

비트 반전과 같은 메모리 오류 문제를 해결하기 위해 여러 접근 방식이 개발되었다. 여기에는 내결함성 프로그래밍(immunity-aware programming), 패리티 RAM, ECC 메모리 등이 있다.[3]

이러한 문제는 추가적인 메모리 비트를 가진 DRAM 모듈과 이러한 비트를 활용하는 메모리 컨트롤러를 사용하여 완화할 수 있다. 이 추가 비트들은 패리티 정보를 기록하거나 오류 정정 코드(Error Correction Code, ECC)를 저장하는 데 사용된다.

패리티 방식은 모든 단일 비트 오류(정확히는 홀수 개의 비트 오류)를 감지할 수 있다. 가장 널리 쓰이는 오류 정정 코드인 단일 오류 정정 및 이중 오류 감지(Single-Error Correction and Double-Error Detection, SECDED) 해밍 코드는 단일 비트 오류를 수정할 수 있으며, 일반적인 구성에서는 추가 패리티 비트를 이용하여 이중 비트 오류까지 감지할 수 있다. 칩킬(Chipkill) ECC는 더 발전된 방식으로, 메모리 칩 전체가 손상되는 경우를 포함하여 여러 비트의 오류를 수정할 수 있다.

5. 구현

시모어 크레이는 CDC 6600 설계 당시 패리티 비트를 포함하지 않은 이유에 대해 "패리티는 농부들을 위한 것"이라고 답한 것으로 유명하다. 이는 초기 컴퓨터 시스템에서 오류 정정 기술의 중요성이 간과되기도 했음을 보여주는 일화이다. 이후 CDC 7600 모델에는 패리티 비트가 포함되었다. 초기 IBM PC와 1990년대 초반까지의 개인용 컴퓨터들은 메모리 패리티 검사 기능을 사용했으나, 이후 출시된 대부분의 PC에서는 비용 등의 이유로 이 기능이 제외되었다.

5. 1. ECC 지원 시스템

ECC 지원 메모리 컨트롤러는 일반적으로 워드당 단일 비트의 오류를 감지하고 수정(SEC, Single-Error Correction)하며, 워드당 두 비트의 오류를 감지(DED, Double-Error Detection)할 수 있다. 64개의 데이터 비트와 8개의 검사 비트를 가진 72비트 워드가 일반적이지만, 다른 크기에서도 ECC는 사용된다. 일부 컴퓨터의 BIOS는 리눅스, macOS, Windows (Windows 2000 및 이후 버전[6])와 같은 운영 체제와 함께 작동하여, 감지되고 수정된 메모리 오류를 계산하고 기록할 수 있다. 이를 통해 심각한 고장으로 이어지기 전에 문제가 발생한 메모리 모듈을 식별하는 데 도움을 줄 수 있다.

일부 DRAM 칩은 "내부" 온칩 오류 정정 회로를 포함하기도 한다. 이를 통해 ECC 메모리 컨트롤러가 없는 시스템에서도 ECC 메모리의 이점 중 일부를 누릴 수 있다.[7][8][35][36] 시스템에 따라 EOS 메모리 모듈을 사용하여 유사한 효과를 얻을 수도 있다.

오류 감지 및 수정(EDAC) 방식은 예상되는 오류의 종류에 따라 달라진다. 과거 메모리 칩이 1비트 폭이었던 시절에는 워드 내 각 비트의 오류가 독립적으로 발생한다고 가정했지만, 칩당 비트 수가 증가하면서 여러 비트가 동시에 오류를 일으킬 가능성이 커졌다. 이러한 약점을 보완하기 위해 IBM의 칩킬(Chipkill), 썬 마이크로시스템즈의 확장 ECC(Extended ECC), 휴렛 팩커드의 칩스페어(Chipspare), 인텔의 단일 장치 데이터 정정(SDDC, Single Device Data Correction) 등 다양한 기술이 개발되었다.[37]

DRAM 메모리는 오류 정정 코드를 사용하여 소프트 에러에 대한 보호 기능을 강화할 수 있다. 이러한 ECC 메모리는 서버와 같이 높은 내결함성이 요구되는 시스템이나, 우주선과 같이 배경 방사선 노출이 많은 환경에 특히 적합하다. 일부 시스템은 주기적으로 메모리 전체를 읽고, 오류가 발견되면 수정된 데이터를 다시 쓰는 방식인 메모리 스크러빙을 수행하여 소프트 에러를 제거하기도 한다.[38]

인터리빙 기법은 물리적으로 인접한 여러 비트를 서로 다른 데이터 워드에 분산시켜 할당함으로써, 단일 우주선 입자가 여러 비트에 영향을 미치더라도 각 워드 내에서는 수정 가능한 오류(예: 단일 비트 오류) 범위 내에 머무르도록 하는 방식이다. 이를 통해 단일 이벤트 섭동(SEU)의 영향을 효과적으로 완화하고 시스템 안정성을 유지할 수 있다.

1982년 Cromemco의 512KB 메모리 보드. 16비트 워드당 22비트를 사용하여 단일 비트 오류 정정을 수행했다.


오류 정정 메모리 컨트롤러는 전통적으로 해밍 코드를 사용하지만, 일부는 삼중 모듈 중복(TMR) 방식을 사용하기도 한다. TMR은 해밍 코드 방식보다 하드웨어 처리 속도가 빠르다는 장점이 있어, 우주 위성 시스템 등 고신뢰성이 중요한 환경에서 종종 채택된다. 다만, 위성 시스템의 RAM 자체는 해밍 오류 정정을 사용하는 경우도 많다.

초기의 ECC 메모리 구현은 수정 가능한 오류(CE, Correctable Error)는 내부적으로 처리하고 사용자에게 알리지 않았으며, 수정 불가능한 오류(UE, Uncorrectable Error)만 보고하는 경우가 많았다. 하지만 최신 시스템들은 CE와 UE를 모두 기록하여 관리한다. 일부 관리자들은 오류 발생률이 높은 메모리 모듈을 UE 발생 전에 예방적으로 교체하기도 한다.[9][39]

많은 ECC 메모리 시스템은 CPU와 메모리 사이에 별도의 "외부" EDAC 회로를 사용했다. 드물게는 칩 내부의 EDAC와 외부 EDAC 시스템을 함께 사용하는 경우도 있었는데, 이 경우 외부 EDAC는 내부 EDAC가 수정하지 못하는 특정 유형의 오류를 처리하도록 설계되었다.[7][35] NUMA 아키텍처 등으로 메모리 컨트롤러가 CPU에 통합되는 추세에 따라, 최신 데스크톱 및 서버 CPU는 EDAC 회로를 CPU 내부에 통합하고 있다.[23] CPU 통합은 오류가 없는 정상 작동 중에는 EDAC로 인한 지연 시간(latency penalty)을 없애는 장점이 있다.

2009년 기준으로 가장 널리 사용되는 오류 정정 코드는 단일 비트 오류 수정 및 이중 비트 오류 감지(SEC-DED) 기능을 제공하는 해밍 코드와 샤오 코드(Hsiao code)이다.[40] 그 외에도 이중 비트 오류 수정 및 삼중 비트 오류 감지(DEC-TED) 코드, 단일 니블(4비트) 오류 수정 및 이중 니블 오류 감지(SNC-DND) 코드, 리드-솔로몬 부호 등 다양한 코드가 메모리 보호를 위해 제안되었다. 하지만 실제 환경에서 다중 비트 오류 정정은 여러 개의 SEC-DED 코드를 인터리빙하여 구현하는 경우가 일반적이다.[10][11][41][42]

초기 ECC 회로 연구는 주로 회로 면적과 처리 지연 시간을 줄이는 데 초점을 맞췄다. 해밍은 특정 검사 행렬을 사용하여 SEC-DED 코드를 구현할 수 있음을 처음 보였고, 이후 샤오는 홀수 가중치 열(odd-weight-column)을 가진 다른 행렬 구조를 통해 기존 해밍 코드보다 더 적은 하드웨어 면적과 더 짧은 지연 시간으로 SEC-DED 기능을 구현할 수 있음을 증명했다.[12] 최근의 연구는 면적 및 지연 시간 최소화뿐만 아니라 소비 전력을 줄이는 방향으로도 진행되고 있다.[13][14][43][44][45]

시모어 크레이가 CDC 6600 설계 시 패리티 비트를 제외한 이유를 묻자 "패리티는 농부들을 위한 것"이라고 답했다는 일화는 유명하다. 하지만 그의 다음 컴퓨터인 CDC 7600에는 패리티 비트가 포함되었는데, 이를 두고 전문가들은 "분명히 많은 농부들이 컴퓨터를 사는 모양"이라고 비꼬기도 했다. 초기 IBM PC와 1990년대 초반까지의 PC들은 패리티 검사를 사용했으나, 이후 대부분의 PC에서는 사용되지 않게 되었다. 현재 AMD의 거의 모든 64비트 제품을 포함한 다수의 마이크로프로세서 메모리 컨트롤러는 ECC 메모리를 지원하지만, 모든 마더보드, 특히 로우엔드 칩셋을 사용하는 보드가 ECC 기능을 지원하는 것은 아니다.

5. 2. 캐시 메모리에서의 ECC

많은 CPU는 온칩 캐시에서 오류 정정 코드를 사용한다. 대표적인 예로는 인텔아이테니엄, 제온, 코어펜티엄 (P6 마이크로아키텍처 이후)[15][16], AMD애슬론, 옵테론, 모든 기반[17]젠+ 기반[18] 프로세서(EPYC, 라이젠, 라이젠 스레드리퍼), 그리고 DEC 알파 21264[10][19][41][47][48] 등이 있다.

2006년 기준으로, 상업용 마이크로프로세서에서 사용되는 일반적인 캐시 오류 보호 기술은 EDC/ECC와 ECC/ECC 두 가지이다.[20][49]

  • EDC/ECC: 레벨 1 캐시(L1 캐시)에는 오류 감지 코드(EDC)를 사용하고, 레벨 2 캐시(L2 캐시)는 ECC로 보호한다. L1 캐시에서 오류가 감지되면, ECC로 보호된 L2 캐시에서 데이터를 복구한다. 이 방식을 사용하는 CPU는 모든 저장 명령[50] 시 데이터를 L2 캐시에도 동시에 기록하는 쓰기 관통(write-through) 방식을 사용한다. 따라서 L1 데이터 캐시에서 읽기 오류가 발생해도 L2 캐시에서 해당 데이터 복원이 가능하다.[20]
  • ECC/ECC: L1 캐시와 L2 캐시 모두 ECC로 보호하는 방식이다.[20]

5. 3. 레지스터드 메모리 (Registered Memory)

64 GiB DDR5-4800 ECC 1.1 V RDIMM 하나


레지스터드 메모리(Registered Memory) 또는 버퍼드 메모리(Buffered Memory)는 ECC 메모리와는 다른 기술이며, 서로 다른 기능을 수행한다. 서버 시스템에서는 전기적 문제 없이 많은 메모리 모듈을 안정적으로 사용하기 위해 레지스터드 메모리를 사용하는 것이 일반적이며, 동시에 데이터 무결성을 위해 ECC 기능을 함께 사용하는 경우가 많다.

8GB DDR4-2133 ECC 1.2V RDIMM 2개


반면, 데스크톱 컴퓨터에 사용되는 메모리는 경제성을 위해 일반적으로 레지스터드 기능과 ECC 기능을 모두 사용하지 않는다. 그러나 버퍼되지 않은(Unbuffered, 즉 레지스터드되지 않은) ECC 메모리도 존재하며,[21] 일부 데스크톱용 마더보드는 ECC 기능을 지원하는 CPU와 함께 사용할 경우, 이러한 메모리 모듈의 ECC 기능을 지원하기도 한다.[22][51]

레지스터드 메모리는 메모리 버퍼 회로가 없는 마더보드에서는 안정적으로 작동하지 않으며, 그 반대로 버퍼 회로가 있는 마더보드에서는 레지스터드되지 않은 메모리가 제대로 작동하지 않는다.

6. 장단점

오류 정정 코드(Error Correction Code, ECC) 메모리는 감지되지 않은 데이터 손상을 방지하는 중요한 역할을 한다. 특히 과학 및 금융 컴퓨팅, 데이터베이스 및 파일 서버와 같이 데이터 무결성이 매우 중요한 시스템에서 필수적으로 사용된다. ECC는 다중 사용자 서버 환경이나 최대 가용성이 요구되는 시스템에서 시스템 충돌 횟수를 줄여 안정성을 높이는 데 기여한다. 메모리 오류는 시스템 충돌의 주요 원인 중 하나이며, 때로는 보안 취약점으로 이어질 수도 있다.

그러나 ECC 메모리 사용에는 몇 가지 단점도 존재한다. 일반적으로 비 ECC 메모리보다 가격이 높고, ECC를 지원하는 마더보드나 프로세서 등 관련 하드웨어도 더 비싼 경향이 있다. 또한 모든 시스템에서 호환되는 것은 아니며, 오류 검사 과정으로 인해 약간의 성능 저하가 발생할 수 있고, 오류 정정 회로로 인해 추가적인 전력 소비가 발생하기도 한다.

결론적으로 ECC 메모리 사용 여부는 데이터 손실 방지를 통한 높은 안정성 확보라는 장점과, 추가 비용 및 성능/전력 관련 단점 사이의 트레이드 오프 관계를 고려하여 결정해야 한다. 중요 데이터 처리나 고가용성이 필수적인 환경에서는 ECC 메모리가 강력히 권장되지만, 일반적인 개인용 컴퓨터 환경에서는 비용 대비 효용을 따져볼 필요가 있다.

6. 1. 가격

ECC 메모리는 일반적으로 비 ECC 메모리보다 가격이 높다. 이는 ECC 메모리 모듈 제조에 추가적인 회로(하드웨어)가 필요하고, ECC 메모리 및 관련 시스템 하드웨어의 생산량이 상대적으로 적기 때문이다. ECC를 지원하는 마더보드, 칩셋, 프로세서 역시 더 비싼 경향이 있다.

그러나 AMD가 소비자용으로 판매하는 AM4 소켓용 프로세서 중 미들~하이엔드 제품군에서는 ECC 기능이 구현되어 있는 경우가 있으며, ASUS, GIGABYTE, ASRock 등 다수 제조사의 마더보드에서 펌웨어를 통해 이 기능을 비활성화하지 않아 일반적인 가격으로 ECC 기능을 활용할 수도 있다. 반면, MSI는 대부분의 제품에서 ECC 기능을 지원하지 않도록 제한하고 있다.

ECC는 메모리 컨트롤러가 오류 검사를 수행하는 데 추가 시간이 필요하기 때문에, 일부 시스템에서는 애플리케이션 및 구현 방식에 따라 메모리 성능이 약 2~3% 정도 저하될 수 있다. 하지만 최신 시스템에서는 CPU에 ECC 검사 기능이 통합되어, 오류가 감지되지 않는 한 메모리 접근에 추가적인 지연이 발생하지 않는다.[23][24][25][52]

결과적으로, 비정상적인 데이터 손실을 막는 안정성과 높은 비용 사이에는 트레이드 오프 관계가 존재한다.

6. 2. 성능

ECC는 메모리 컨트롤러가 오류 검사를 수행하는 데 추가 시간이 필요하기 때문에, 일부 시스템에서는 애플리케이션 및 구현 방식에 따라 메모리 성능을 약 2~3% 정도 낮출 수 있다. 하지만 최신 시스템들은 CPU에 ECC 검사 기능을 통합하여, 오류가 감지되지 않는 한 메모리 액세스 시 추가적인 지연을 발생시키지 않는다.[23][24][25][52]

다만, 인텔크롬북용으로 지원하는 '''인 밴드 ECC'''(in-band ECC) 방식은 예외이다. 이 방식은 보호용 테이블을 주 시스템 메모리의 예약된 영역에 저장하는데,[26][27] 웹 브라우징이나 일반적인 작업에는 거의 영향을 주지 않지만, 비디오 게임이나 비디오 편집과 같은 작업에서는 벤치마크 결과 최대 25%까지 성능 저하를 보이기도 했다.[28]

또한, ECC 기능을 지원하는 메모리는 오류 정정 회로로 인해 추가 전력을 소비할 수 있다.

6. 3. 전력 소비

ECC를 지원하는 메모리는 오류 정정 회로로 인해 추가적인 전력 소비에 기여할 수 있다.

참조

[1] 웹사이트 RAM Revealed http://www.admin-mag[...] 2014-10-20
[2] 논문 A Survey of Techniques for Modeling and Improving Reliability of Computing Systems https://dx.doi.org/1[...] IEEE TPDS 2015
[3] 웹사이트 A Realistic Evaluation of Memory Hardware Errors and Software System Susceptibility http://www.cs.roches[...]
[4] 웹사이트 Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors http://users.ece.cmu[...] IEEE 2015-03-10
[5] 웹사이트 Cutting-edge hack gives super user status by exploiting DRAM weakness https://arstechnica.[...] Ars Technica 2015-03-10
[6] 웹사이트 "!mca" https://docs.microso[...] 2021-03-27
[7] 문서 Space Radiation Effects in Advanced Flash Memories http://trs-new.jpl.n[...] NASA Electronic Parts and Packaging Program (NEPP) 2001
[8] 웹사이트 ECC DRAM http://www.intellige[...] 2021-06-12
[9] 문서 EDAC – Error Detection And Correction https://www.kernel.o[...] 2005–2009
[10] 문서 Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches http://users.ece.ute[...] 2009
[11] 문서 Error Correcting Code Analysis for Cache Memory High Reliability and Performance http://www.date-conf[...]
[12] 문서 A Class of Optimal Minimum Odd-weight-column SEC-DED Codes http://www.cs.berkel[...] 1970
[13] 문서 Selecting Error Correcting Codes to Minimize Power in Memory Checker Circuits https://hostdb.ece.u[...]
[14] 문서 Reducing cache power with low-cost, multi-bit error-correcting codes http://dl.acm.org/ci[...]
[15] 문서 Intel Xeon Processor E7 Family: Reliability, Availability, and Serviceability http://www.intel.com[...] 2011
[16] 웹사이트 Bios and Cache https://www.custom-b[...] 2021-03-27
[17] 웹사이트 AMD Zen microarchitecture — Memory Hierarchy https://en.wikichip.[...] 2018-10-15
[18] 웹사이트 AMD Zen+ microarchitecture — Memory Hierarchy https://en.wikichip.[...] 2018-10-15
[19] 문서 Multi-bit Error Tolerant Caches Using Two-Dimensional Error Coding http://www.ece.cmu.e[...] 2007
[20] 문서 Choosing an Error Protection Scheme for a Microprocessor's L1 Data Cache http://people.ee.duk[...] 2006
[21] 웹사이트 Typical unbuffered ECC RAM module: Crucial CT25672BA1067 http://www.crucial.c[...]
[22] 문서 Specification of desktop motherboard that supports both ECC and non-ECC unbuffered RAM with compatible CPUs http://www.asus.com/[...]
[23] 웹사이트 AMD-762™ System Controller Software/BIOS Design Guide, p. 179 http://support.amd.c[...]
[24] 문서 Benchmark of AMD-762/Athlon platform with and without ECC http://forum.buildyo[...]
[25] 웹사이트 ECCploit: ECC Memory Vulnerable to Rowhammer Attacks After All https://www.vusec.ne[...] Systems and Network Security Group at VU Amsterdam 2018-11-22
[26] 특허 Address range based in-band memory error-correcting code protection module with syndrome buffer
[27] 특허 System and method for transparent register data error detection and correction via a communication bus
[28] 웹사이트 ASRock Industrial NUCS BOX-1360P/D4 Review: Raptor Lake-P Impresses, plus Surprise ECC https://www.anandtec[...] 2024-01-29
[29] 웹사이트 RAM Revealed http://www.admin-mag[...] 2014-10-20
[30] 논문 A Survey of Techniques for Modeling and Improving Reliability of Computing Systems https://doi.org/10.1[...] IEEE TPDS 2015
[31] 웹사이트 설계品質確保の思想――航空宇宙エレクトロニクスに学ぶ「信頼性設計」(檜原弘樹) http://www.kumikomi.[...] CQ出版社 2018-07-10
[32] 웹사이트 "A Realistic Evaluation of Memory Hardware Errors and Software System Susceptibility". Usenix Annual Tech Conference 2010 http://www.cs.roches[...] 2018-07-16
[33] 웹사이트 Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors http://users.ece.cmu[...] IEEE 2015-03-10
[34] 웹사이트 Cutting-edge hack gives super user status by exploiting DRAM weakness https://arstechnica.[...] Ars Technica 2015-03-10
[35] 간행물 Space radiation effects in advanced flash memories https://hdl.handle.n[...]
[36] 웹사이트 ECC DRAM – Intelligent Memory http://www.intellige[...] 2014-12-23
[37] 웹사이트 HP-UX Developer Edge https://h50146.www5.[...] 日本ヒューレット・パッカード株式会社 2017-07-22
[38] 웹사이트 ECCメモリについて https://ccmp.jp/tech[...] クラスターコンピューティング株式会社 2017-07-10
[39] 문서 EDAC - Error Detection And Correction https://www.kernel.o[...] Doug Thompson, Mauro Carvalho Chehab 2009-09-05
[40] 웹사이트 コンピュータアーキテクチャの話(269) IBMの研究員が考案したHsiaoコード {{!}} マイナビニュース https://news.mynavi.[...] 株式会社マイナビ 2018-07-11
[41] 논문 Memory Mapped ECC: Low-Cost Error Protection for Last Level Caches http://users.ece.ute[...] Doe Hyun Yoon; Mattan Erez 2009
[42] 논문 Error Correcting Code Analysis for Cache Memory High Reliability and Performance http://www.date-conf[...] Daniele Rossi; Nicola Timoncini; Michael Spica; Cecilia Metra
[43] 논문 Selecting Error Correcting Codes to Minimize Power in Memory Checker Circuits https://hostdb.ece.u[...] Shalini Ghosh; Sugato Basu; and Nur A. Touba
[44] 논문 Reducing cache power with low-cost, multi-bit error-correcting codes http://dl.acm.org/ci[...] Chris Wilkerson; Alaa R. Alameldeen; Zeshan Chishti; Wei Wu; Dinesh Somasekhar; Shih-lien Lu
[45] 논문 A Class of Optimal Minimum Odd-weight-column SEC-DED Codes http://www.cs.berkel[...] M. Y. Hsiao 1970
[46] 웹사이트 非同期SRAM http://japan.cypress[...] Cypress Semiconductor Corp. 2018-07-15
[47] 논문 Multi-bit Error Tolerant Caches Using Two-Dimensional Error Coding http://www.ece.cmu.e[...] Jangwoo Kim; Nikos Hardavellas; Ken Mai; Babak Falsafi; James C. Hoe 2007
[48] 간행물 Intel Xeon Processor E7 Family: Reliability, Availability, and Serviceability http://www.intel.com[...] Intel Corporation 2011
[49] 논문 Choosing an Error Protection Scheme for a Microprocessor’s L1 Data Cache http://people.ee.duk[...] Nathan N. Sadler and Daniel J. Sorin 2006
[50] 서적 Computer Organization and Design: The Hardware/Software Interface Morgan Kaufmann Publishers
[51] 웹사이트 Specification of desktop motherboard that supports both ECC and non-ECC unbuffered RAM with compatible CPUs http://www.asus.com/[...]
[52] 웹사이트 Benchmark of AMD-762/Athlon platform with and without ECC http://forum.buildyo[...]
[53] 웹인용 RAM Revealed http://www.admin-mag[...] 2014-10-20
[54] 논문 A survey of techniques for improving error-resilience of DRAM https://dx.doi.org/1[...] JSA 2018
[55] 문서 Single Event Upset at Ground Level, Eugene Normand, Member, IEEE, Boeing Defense & Space Group, Seattle, WA 98124-2499 https://web.archive.[...]
[56] 논문 A Survey of Techniques for Modeling and Improving Reliability of Computing Systems https://dx.doi.org/1[...] IEEE TPDS 2015
[57] 간행물 In-Flight Observations of Multiple-Bit Upset in DRAMs https://trs.jpl.nasa[...] Gary M. Swift and Steven M. Guertin. Jet Propulsion Laboratory



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com